home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / program / gcc / libmat.lha / src / mlr.cc < prev    next >
C/C++ Source or Header  |  1980-01-01  |  767b  |  48 lines

  1. //                MATRIX LIB
  2. //            TOMMY JOHANSSON 1995
  3.  
  4. #include "matrix.h"
  5. void LR(const Matrix & A,Matrix & L,Matrix & R)
  6. {
  7.     
  8.     int o=1,x,y,i,j;
  9.     float v;
  10.  
  11.     #ifdef DEBUG 
  12.     printf("LR-faktoriserar matris.\n");
  13.     #endif
  14.     R=A;
  15.     L=I(A.m);
  16.     for(o=1;o<=A.m-1;o++)
  17.     {
  18.         for(x=o+1;x<=A.m;x++)
  19.         {
  20.             for(y=o;y<=A.n;y++)
  21.             {
  22.                 if((y==o)&&(R.koff[o][o]!=0)) 
  23.                     v=R.koff[x][o]/R.koff[o][o];
  24.                 else if(R.koff[o][o]==0)
  25.                 {
  26.                     for(i=o+1;i<=A.m;i++)
  27.                     {
  28.                         if(R.koff[i][o]!=0)
  29.                         {
  30.                             for(j=o;j<=A.n;j++)
  31.                                 R.koff[o][j]+=R.koff[i][j];//lägg till rad till rad
  32.                             i=A.m;                           // bryt slingan
  33.                         }
  34.                     }
  35.                 }
  36.                 #ifdef DEBUG
  37.                 printf("v=%f o=%d x=%d y=%d\n",v,o,x,y);
  38.                 #endif
  39.                 R.koff[x][y]-=v*R.koff[o][y];
  40.                 L.koff[x][o]=v;
  41.  
  42.             }
  43.         }
  44.     }
  45. }
  46.  
  47.  
  48.